
export function parseTime(timeStr) {
    const [hours, minutes, seconds, milliseconds] = timeStr.split(/[,:]/).map(Number);
    return hours * 3600000 + minutes * 60000 + seconds * 1000 + milliseconds;
}

// 解析 srt 文件内容
export function parseSrt(content) {
    const subtitles = [];
    const blocks = content.trim().split('\n\n');

    blocks.forEach(block => {
        const lines = block.split('\n');
        if (lines.length >= 3) {
            const timeRange = lines[1].split(' --> ');
            subtitles.push({
                startTime: parseTime(timeRange[0]),
                endTime: parseTime(timeRange[1]),
                text: lines.slice(2).join('\n'),
                preloadTime: 0 // 默认预加载时间为0
            });
        }
    });
    return subtitles;
}

// 修改获取当前字幕的函数，考虑预加载时间
// export function getCurrentSubtitle(subtitles, currentTime) {
//     return subtitles.find(subtitle =>
//         currentTime >= (subtitle.startTime - subtitle.preloadTime) && // 提前显示
//         currentTime < subtitle.endTime // 在 endTime 之前结束
//     );
// }

export function getCurrentSubtitle(subtitles, currentTime) {
    // 找到当前时间最接近的字幕
    let currentSubtitle = null;
    let nextSubtitle = null;

    for (const subtitle of subtitles) {
        const startTime = subtitle.startTime - subtitle.preloadTime*1000;
        const endTime = subtitle.endTime;

        // 检查当前时间是否在字幕的显示区间内
        if (currentTime >= startTime && currentTime < endTime) {
            currentSubtitle = subtitle;
        }

        // 检查当前时间是否在下一个字幕的提前显示区间内
        if (currentTime >= startTime && currentTime < subtitle.startTime) {
            nextSubtitle = subtitle;
        }
    }

    // 如果当前时间在下一个字幕的提前显示区间内，返回下一个字幕
    if (nextSubtitle) {
        return nextSubtitle;
    }

    // 否则返回当前字幕
    return currentSubtitle;
}